100
How do I enable the cross link support ( rectangular )

OBJECT element,elements,link,links,surface;

surface =  ObjectByName("AN1") ;
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectCallMethod( elements , "Add", "Element <sha ;;0>A");
	_ObjectCallMethod( elements , "Add", "Element <sha ;;0>B",0,76);
	element = _ObjectCallMethod( elements , "Add", "Element <sha ;;0>C",-76,32);
		_ObjectSetProperty( element , "AutoSize", 0);
		_ObjectSetProperty( element , "Height", 32);
	element = _ObjectCallMethod( elements , "Add", "Element <sha ;;0>D",76,32);
		_ObjectSetProperty( element , "AutoSize", 0);
		_ObjectSetProperty( element , "Height", 32);
links = _ObjectGetProperty( surface , "Links");
	link = _ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(1)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(2)"));
		_ObjectSetProperty( link , "StartPos", 1);
		_ObjectSetProperty( link , "EndPos", 1);
	link = _ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(2)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(1)"));
		_ObjectSetProperty( link , "StartPos", 1);
		_ObjectSetProperty( link , "EndPos", 1);
	_ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(3)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(4)"));
	link = _ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(4)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(3)"));
		_ObjectSetProperty( link , "StartPos", 0);
		_ObjectSetProperty( link , "EndPos", 2);
_ObjectSetProperty( surface , "ShowLinks", 33);

99
How do I show a link frmo bottom to top, or reverse, not from left to right

OBJECT elements,link,links,surface;

surface =  ObjectByName("AN1") ;
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectCallMethod( elements , "Add", "Element <sha ;;0>A");
	_ObjectCallMethod( elements , "Add", "Element <sha ;;0>B",0,64);
links = _ObjectGetProperty( surface , "Links");
	link = _ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(1)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(2)"));
		_ObjectSetProperty( link , "StartPos", 1);
		_ObjectSetProperty( link , "EndPos", 1);

98
What options to align the elements do I have if I use Arrange method

OBJECT elements,links,surface;

surface =  ObjectByName("AN1") ;
_ObjectCallMethod( surface , "BeginUpdate");
_ObjectSetProperty( surface , "ShowGridLines", -1);
elements = _ObjectGetProperty( surface , "Elements");
	h1 = _ObjectGetProperty( _ObjectCallMethod( elements , "Add", "Top Alignment") , "ID");
	_ObjectCallMethod( elements , "Add", "Element");
	_ObjectCallMethod( elements , "Add", "Element");
	_ObjectCallMethod( elements , "Add", "Element");
	h2 = _ObjectGetProperty( _ObjectCallMethod( elements , "Add", "Center Alignment","",96) , "ID");
	_ObjectCallMethod( elements , "Add", "Element","",96);
	_ObjectCallMethod( elements , "Add", "Element","",96);
	_ObjectCallMethod( elements , "Add", "Element","",96);
	h3 = _ObjectGetProperty( _ObjectCallMethod( elements , "Add", "Bottom Alignment","",178) , "ID");
	_ObjectCallMethod( elements , "Add", "Element","",192);
	_ObjectCallMethod( elements , "Add", "Element","",192);
	_ObjectCallMethod( elements , "Add", "Element","",192);
links = _ObjectGetProperty( surface , "Links");
	_ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(1)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(2)"));
	_ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(1)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(3)"));
	_ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(2)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(4)"));
	_ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(2)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(3)"));
	_ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(5)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(6)"));
	_ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(5)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(7)"));
	_ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(6)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(8)"));
	_ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(6)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(7)"));
	_ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(9)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(10)"));
	_ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(9)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(11)"));
	_ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(10)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(12)"));
	_ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(10)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(11)"));
_ObjectCallMethod(surface, "ExecuteTemplate", "DefArrange(3) = 0");
_ObjectCallMethod( surface , "Arrange", h1);
_ObjectCallMethod(surface, "ExecuteTemplate", "DefArrange(3) = 1");
_ObjectCallMethod( surface , "Arrange", h2);
_ObjectCallMethod(surface, "ExecuteTemplate", "DefArrange(3) = 2");
_ObjectCallMethod( surface , "Arrange", h3);
_ObjectCallMethod( surface , "EndUpdate");

97
Is there an auto-arrange feature that will display the flow-chart centered and zoomed correctly after we are finished building it

OBJECT elements,links,surface;

surface =  ObjectByName("AN1") ;
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element A") , "ID", "A");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element B") , "ID", "B");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element C") , "ID", "C");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element D") , "ID", "D");
links = _ObjectGetProperty( surface , "Links");
	_ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`A`)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`B`)"));
	_ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`A`)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`C`)"));
	_ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`B`)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`D`)"));
	_ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`B`)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`C`)"));
_ObjectCallMethod( surface , "Arrange", );

96
Is it possible to change the distance between elements, when calling the Arrange method

OBJECT elements,links,surface;

surface =  ObjectByName("AN1") ;
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element A") , "ID", "A");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element B") , "ID", "B");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element C") , "ID", "C");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element D") , "ID", "D");
links = _ObjectGetProperty( surface , "Links");
	_ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`A`)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`B`)"));
	_ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`A`)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`C`)"));
	_ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`B`)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`D`)"));
	_ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`B`)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`C`)"));
_ObjectCallMethod(surface, "ExecuteTemplate", "DefArrange(1) = 0");
_ObjectCallMethod(surface, "ExecuteTemplate", "DefArrange(2) = 0");
_ObjectCallMethod( surface , "Arrange", );

95
How do I organize vertically the elements

OBJECT elements,links,surface;

surface =  ObjectByName("AN1") ;
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element A") , "ID", "A");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element B") , "ID", "B");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element C") , "ID", "C");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element D") , "ID", "D");
links = _ObjectGetProperty( surface , "Links");
	_ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`A`)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`B`)"));
	_ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`A`)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`C`)"));
	_ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`B`)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`D`)"));
	_ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`B`)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`C`)"));
_ObjectSetProperty( surface , "ShowLinksType", 2);
_ObjectCallMethod(surface, "ExecuteTemplate", "DefArrange(0) = 1");
_ObjectCallMethod( surface , "Arrange", );

94
Is there a way to create a link which has the same start and end element

OBJECT elements,links,surface;

surface =  ObjectByName("AN1") ;
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectCallMethod( elements , "Add", "Element");
links = _ObjectGetProperty( surface , "Links");
	_ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(1)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(1)"));

93
How can I prevent hiding the item when an item with an outgoing link, is collapsed

OBJECT element,elements,links,surface;

surface =  ObjectByName("AN1") ;
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Item <sha ;;0>1") , "ID", 1);
	_ObjectSetProperty( _ObjectCallMethod( elements , "Insert", "Item <sha ;;0>2",1) , "ID", 2);
	element = _ObjectCallMethod( elements , "Add", "Item <sha ;;0>3");
		_ObjectSetProperty( element , "ID", 3);
		_ObjectSetProperty( element , "X", 96);
		_ObjectSetProperty( element , "Y", 23);
links = _ObjectGetProperty( surface , "Links");
	_ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(2)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(3)"));
_ObjectSetProperty( surface , "ShowLinksOnCollapse", -1);

92
How can I change the toolbar's visual appearance

OBJECT surface;

surface =  ObjectByName("AN1") ;
_ObjectCallMethod( _ObjectGetProperty( surface , "VisualAppearance") , "Add", 1,"c:\exontrol\images\normal.ebn");
_ObjectCallMethod(surface, "ExecuteTemplate", "Background(148) = 16777216");
_ObjectCallMethod(surface, "ExecuteTemplate", "Background(149) = 16777215");
_ObjectCallMethod(surface, "ExecuteTemplate", "Background(150) = 2631720");
_ObjectCallMethod(surface, "ExecuteTemplate", "Background(153) = 23093344");
_ObjectCallMethod(surface, "ExecuteTemplate", "Background(154) = 15790320");
_ObjectCallMethod(surface, "ExecuteTemplate", "Background(155) = 27304096");
_ObjectCallMethod(surface, "ExecuteTemplate", "Background(156) = 16777215");

91
How can I change the toolbar's background color

OBJECT surface;

surface =  ObjectByName("AN1") ;
_ObjectCallMethod(surface, "ExecuteTemplate", "Background(149) = 16777215");

90
How can I fit or ensure that all elements are in the control's client area
OBJECT elements,surface;

surface =  ObjectByName("AN1") ;
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element A",-500,-500) , "BackColor", 65280);
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element B",500,500) , "BackColor", 255);
	_ObjectCallMethod( elements , "Add", "Element C",48,24);
_ObjectCallMethod( surface , "FitToClient");

89
When I use the context menu to insert an image, the size seems to be fixed to 32 pixels. How can I control / change this

// CreateElement event - The user creates at runtime a new element.
FUNCTION surfaceEvents_CreateElement(OBJECT surface, OBJECT Element)
	' Element.Edit(0,"multiline,wordwrap")
	' Element.AutoSize = True
	Message( "Call Edit(0) method of the Element object" );
END

// RClick event - Occurs once the user right clicks the control.
FUNCTION surfaceEvents_RClick()
	' SelElement(0).Edit(0,"multiline,wordwrap")
	_ObjectSetProperty( surface , "Selection", _ObjectCallMethod(surface, "ExecuteTemplate", "ElementFromPoint(-1,-1)"));
	Message( "Call Edit(0) method of the SelElement(0) property" );
END

OBJECT element,elements,surface;

surface =  ObjectByName("AN1") ;
ObjectAssociateEvents("surfaceEvents", surface);
_ObjectCallMethod( _ObjectGetProperty( surface , "VisualAppearance") , "Add", 1,"c:\exontrol\images\normal.ebn");
_ObjectCallMethod( _ObjectGetProperty( surface , "VisualAppearance") , "Add", 3,"c:\exontrol\images\hot.ebn");
_ObjectCallMethod(surface, "ExecuteTemplate", "Background(99) = 16777216");
_ObjectCallMethod(surface, "ExecuteTemplate", "Background(102) = 33349056");
_ObjectCallMethod(surface, "ExecuteTemplate", "Background(88) = 50331648");
_ObjectSetProperty( surface , "SelectObjectColor", 16571840);
_ObjectCallMethod(surface, "ExecuteTemplate", "HTMLPicture(`pic1`) = `c:\exontrol\images\zipdisk.gif`");
_ObjectCallMethod(surface, "ExecuteTemplate", "HTMLPicture(`pic2`) = `c:\exontrol\images\auction.gif`");
_ObjectCallMethod(surface, "ExecuteTemplate", "HTMLPicture(`pic3`) = `c:\exontrol\images\colorize.gif`");
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element A") , "ID", "A");
	element = _ObjectCallMethod( elements , "Add", "Custom-size pictures:<br><img>pic1:24</img>,<img>pic2:48</img> ,... and so on.",96,48);
		_ObjectSetProperty( element , "ID", "B");
		_ObjectSetProperty( element , "CaptionSingleLine", 0);
	_ObjectCallMethod( elements , "Add", "Element C",48,24);
_ObjectSetProperty( surface , "EditContextMenuItems", "Size[id=57680][edittype=515][border=0][min=16][max=128][freq=16][editwidth=-128][ticklabel=value = %i ? '<b>'+value : ( value =" +
	" vmax ? '<fgcolor 808080><font ;6><b>'+value : ( value = vmin ? '<fgcolor 808080><font ;6><b>'+value : '' ) )],Insert[group=3](<" +
	"img>pic1:32</img>[id=57763],<img>pic2:32</img>[id=57763],Others[id=1000](default[group=3](<img>pic3</img>[id=57763]),<font ;6>ot" +
	"her sizes[sep],<img>pic3:16</img>[id=57763],<img>pic3:32</img>[id=57763],<img>pic3:64</img>[id=57763]))");

88
Can I add images to node while editing the node using the Edit method

// CreateElement event - The user creates at runtime a new element.
FUNCTION surfaceEvents_CreateElement(OBJECT surface, OBJECT Element)
	' Element.Edit(0,"multiline,wordwrap")
	' Element.AutoSize = True
	Message( "Call Edit(0) method of the Element object" );
END

// RClick event - Occurs once the user right clicks the control.
FUNCTION surfaceEvents_RClick()
	' SelElement(0).Edit(0,"multiline,wordwrap")
	_ObjectSetProperty( surface , "Selection", _ObjectCallMethod(surface, "ExecuteTemplate", "ElementFromPoint(-1,-1)"));
	Message( "Call Edit(0) method of the SelElement(0) property" );
END

OBJECT element,elements,surface;

surface =  ObjectByName("AN1") ;
ObjectAssociateEvents("surfaceEvents", surface);
_ObjectCallMethod( _ObjectGetProperty( surface , "VisualAppearance") , "Add", 1,"c:\exontrol\images\normal.ebn");
_ObjectCallMethod(surface, "ExecuteTemplate", "Background(99) = 16777216");
_ObjectCallMethod(surface, "ExecuteTemplate", "Background(102) = 16777471");
_ObjectSetProperty( surface , "SelectObjectStyle", -1);
_ObjectSetProperty( surface , "SelectObjectColor", 16571840);
_ObjectCallMethod(surface, "ExecuteTemplate", "HTMLPicture(`pic1`) = `c:\exontrol\images\zipdisk.gif`");
_ObjectCallMethod(surface, "ExecuteTemplate", "HTMLPicture(`pic2`) = `c:\exontrol\images\auction.gif`");
_ObjectCallMethod( surface , "Images", "gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTq" +
	"lVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m" +
	"0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" +
	"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=");
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element A") , "ID", "A");
	element = _ObjectCallMethod( elements , "Add", "This is a node that displays pictures:<br><img>pic1:48</img>,<img>pic2:48</img> ,... and so on.",96,48);
		_ObjectSetProperty( element , "ID", "B");
		_ObjectSetProperty( element , "CaptionSingleLine", 0);
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element C",48,24) , "BackColor", 16777215);

87
I am using the Edit method to edit the node, but still not able to display multiple lines. Is this possible

// CreateElement event - The user creates at runtime a new element.
FUNCTION surfaceEvents_CreateElement(OBJECT surface, OBJECT Element)
	' Element.Edit(0,"multiline,wordwrap")
	' Element.AutoSize = True
	Message( "Call Edit(0) method of the Element object" );
END

// RClick event - Occurs once the user right clicks the control.
FUNCTION surfaceEvents_RClick()
	' SelElement(0).Edit(0,"multiline,wordwrap")
	_ObjectSetProperty( surface , "Selection", _ObjectCallMethod(surface, "ExecuteTemplate", "ElementFromPoint(-1,-1)"));
	Message( "Call Edit(0) method of the SelElement(0) property" );
END

OBJECT element,elements,surface;

surface =  ObjectByName("AN1") ;
ObjectAssociateEvents("surfaceEvents", surface);
_ObjectCallMethod( _ObjectGetProperty( surface , "VisualAppearance") , "Add", 1,"c:\exontrol\images\normal.ebn");
_ObjectCallMethod(surface, "ExecuteTemplate", "Background(99) = 16777216");
_ObjectCallMethod(surface, "ExecuteTemplate", "Background(102) = 16777471");
_ObjectSetProperty( surface , "SelectObjectStyle", -1);
_ObjectSetProperty( surface , "SelectObjectColor", 16571840);
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element A") , "ID", "A");
	element = _ObjectCallMethod( elements , "Add", "Right-<b>Click</b> the node to edit it.",96,48);
		_ObjectSetProperty( element , "ID", "B");
		_ObjectSetProperty( element , "CaptionSingleLine", 0);
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element C",48,24) , "BackColor", 16777215);

86
How can I change the visual appearance of the edit's context menu

// CreateElement event - The user creates at runtime a new element.
FUNCTION surfaceEvents_CreateElement(OBJECT surface, OBJECT Element)
	' Element.Edit(0)
	' Element.AutoSize = True
	Message( "Call Edit(0) method of the Element object" );
END

// RClick event - Occurs once the user right clicks the control.
FUNCTION surfaceEvents_RClick()
	' SelElement(0).Edit(0)
	_ObjectSetProperty( surface , "Selection", _ObjectCallMethod(surface, "ExecuteTemplate", "ElementFromPoint(-1,-1)"));
	Message( "Call Edit(0) method of the SelElement(0) property" );
END

OBJECT elements,surface;

surface =  ObjectByName("AN1") ;
ObjectAssociateEvents("surfaceEvents", surface);
_ObjectCallMethod( _ObjectGetProperty( surface , "VisualAppearance") , "Add", 1,"c:\exontrol\images\normal.ebn");
_ObjectCallMethod(surface, "ExecuteTemplate", "Background(99) = 16777216");
_ObjectCallMethod(surface, "ExecuteTemplate", "Background(102) = 16777471");
_ObjectSetProperty( surface , "SelectObjectStyle", -1);
_ObjectSetProperty( surface , "SelectObjectColor", 16571840);
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element A") , "ID", "A");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Right-Click to edit this node",96,48) , "ID", "B");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element C",48,24) , "BackColor", 16777215);

85
How can I edit the node once the user right-click the element

// CreateElement event - The user creates at runtime a new element.
FUNCTION surfaceEvents_CreateElement(OBJECT surface, OBJECT Element)
	' Element.Edit(0)
	' Element.AutoSize = True
	Message( "Call Edit(0) method of the Element object" );
END

// RClick event - Occurs once the user right clicks the control.
FUNCTION surfaceEvents_RClick()
	' SelElement(0).Edit(0)
	_ObjectSetProperty( surface , "Selection", _ObjectCallMethod(surface, "ExecuteTemplate", "ElementFromPoint(-1,-1)"));
	Message( "Call Edit(0) method of the SelElement(0) property" );
END

OBJECT elements,surface;

surface =  ObjectByName("AN1") ;
ObjectAssociateEvents("surfaceEvents", surface);
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element A") , "ID", "A");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element B",96,48) , "ID", "B");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element C",48,24) , "BackColor", 16777215);

84
I wish to return the name that is displayed in the Element that I have selected

// SelectionChanged event - Notifies your application that the control's selection has been changed.
FUNCTION surfaceEvents_SelectionChanged()
	Message( "The number of selected elements is: " );
	Message( _ObjectGetProperty( surface , "SelCount") );
	Message( _ObjectCallMethod(surface, "ExecuteTemplate", "SelElement(0).Caption") );
END

OBJECT element,elements,surface;

surface =  ObjectByName("AN1") ;
ObjectAssociateEvents("surfaceEvents", surface);
_ObjectSetProperty( surface , "HideSel", 0);
_ObjectSetProperty( surface , "SelectObjectColorInactive", _ObjectGetProperty( surface , "SelectObjectColor"));
_ObjectSetProperty( surface , "SelectObjectTextColorInactive", _ObjectGetProperty( surface , "SelectObjectTextColor"));
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element 1") , "Selected", -1);
	element = _ObjectCallMethod( elements , "Add", "Element 2");
		_ObjectSetProperty( element , "X", 32);
		_ObjectSetProperty( element , "Y", 32);

83
Been playing with the surface control with the embedded ExGrid ActiveX...I can see most events coming through via the Surface control but I can't get the OnOLEStartDrag event to fire

// OleEvent event - Occurs once an inside control fires an event.
FUNCTION surfaceEvents_OleEvent(OBJECT surface, OBJECT Element, OBJECT Ev)
	' Ev.Param(1).Value = 2
	' Ev.Param(0).Value.SetData("items to be carried")
	Message( Ev );
END

OBJECT element,elements,grid,surface;

surface =  ObjectByName("AN1") ;
ObjectAssociateEvents("surfaceEvents", surface);
_ObjectCallMethod( surface , "BeginUpdate");
elements = _ObjectGetProperty( surface , "Elements");
	element = _ObjectCallMethod( elements , "InsertControl", "Exontrol.Grid");
		_ObjectSetProperty( element , "ElementFormat", "^"client^"");
		grid = _ObjectGetProperty( element , "Object");
			_ObjectCallMethod( grid , "BeginUpdate");
			_ObjectSetProperty( grid , "OLEDropMode", 1);
			_ObjectCallMethod( _ObjectGetProperty( grid , "Columns") , "Add", "Default");
			_ObjectCallMethod( _ObjectGetProperty( grid , "Items") , "AddItem", "Click the item so it gets the focus");
			_ObjectCallMethod( grid , "EndUpdate");
_ObjectCallMethod( surface , "MoveCorner", 17,0);
_ObjectCallMethod( surface , "EndUpdate");

82
Is it possible to assign/add a percent to an element

OBJECT element,elements,surface;

surface =  ObjectByName("AN1") ;
elements = _ObjectGetProperty( surface , "Elements");
	element = _ObjectCallMethod( elements , "Add", "Element A");
		_ObjectSetProperty( element , "ID", "A");
		_ObjectSetProperty( element , "CaptionAlign", 1);
		_ObjectSetProperty( element , "AutoSize", 0);
		_ObjectSetProperty( element , "Height", 36);
		_ObjectSetProperty( element , "Width", 96);
		_ObjectSetProperty( element , "MinHeight", 36);
		_ObjectSetProperty( element , "BackgroundExt", "none[(2,100%-15,100%-4,14)](left[50%,back=RGB(0,255,0),text=`15%`,align=0x11,pattern=6,frame])");
		_ObjectCallMethod(surface, "TemplatePut", "Dim eleObj")
		_ObjectCallMethod(surface, "TemplatePut", element)
		_ObjectCallMethod(surface, "ExecuteTemplate", "eleObj.BackgroundExtValue(2,2) = `75%`");
		_ObjectCallMethod(surface, "ExecuteTemplate", "eleObj.BackgroundExtValue(2,4) = BackgroundExtValue(2,2)");

81
How can I disable selecting the nodes/elements
OBJECT surface;

surface =  ObjectByName("AN1") ;
_ObjectSetProperty( surface , "AllowSelectObject", 0);
_ObjectSetProperty( surface , "AllowSelectNothing", 0);
_ObjectSetProperty( surface , "AllowSelectObjectRect", 0);
_ObjectSetProperty( surface , "AllowToggleSelectKey", 0);

80
How can I set my zooming levels on the control's toolbar

OBJECT elements,surface;

surface =  ObjectByName("AN1") ;
_ObjectSetProperty( surface , "ZoomLevels", "75,100,150,200");
_ObjectSetProperty( surface , "AllowLinkObjects", 0);
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element A") , "ID", "A");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element B",96,24) , "ID", "B");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element C",48,12) , "BackColor", 16777215);

79
How can I prevent zooming the surface

OBJECT surface;

surface =  ObjectByName("AN1") ;
_ObjectSetProperty( surface , "AllowZoomSurface", 0);
_ObjectSetProperty( surface , "AllowZoomWheelSurface", 0);
_ObjectSetProperty( surface , "ToolBarFormat", "-1,100");

78
How can I prevent adding the links
OBJECT elements,surface;

surface =  ObjectByName("AN1") ;
_ObjectSetProperty( surface , "AllowLinkObjects", 0);
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element A") , "ID", "A");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element B",96,24) , "ID", "B");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element C",48,12) , "BackColor", 16777215);

77
How can I fix all elements on the surface, so no moving or resizing is allowed

OBJECT elements,surface;

surface =  ObjectByName("AN1") ;
_ObjectSetProperty( surface , "AllowResizeObject", 0);
_ObjectSetProperty( surface , "AllowMoveObject", 0);
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element A") , "ID", "A");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element B",96,24) , "ID", "B");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element C",48,12) , "BackColor", 16777215);

76
How can I link elements with no pressing the SHIFT key
OBJECT elements,surface;

surface =  ObjectByName("AN1") ;
_ObjectSetProperty( surface , "AllowInsertObject", 0);
_ObjectSetProperty( surface , "AllowLinkObjects", 1);
_ObjectSetProperty( surface , "AllowMoveObject", 0);
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element A") , "ID", "A");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element B",96,24) , "ID", "B");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element C",48,12) , "BackColor", 16777215);

75
How can I disable creating the tree/hierarchies
OBJECT elements,surface;

surface =  ObjectByName("AN1") ;
_ObjectSetProperty( surface , "AllowInsertObject", 0);
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element A") , "ID", "A");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element B",96,24) , "ID", "B");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element C",48,12) , "BackColor", 16777215);

74
How can I create new elements using simple clicks rather than double clicks

OBJECT surface;

surface =  ObjectByName("AN1") ;
_ObjectSetProperty( surface , "AllowCreateObject", 1);

73
How can I disable creating new elements at runtime
OBJECT surface;

surface =  ObjectByName("AN1") ;
_ObjectSetProperty( surface , "AllowCreateObject", 0);

72
I've noticed that the links cut the elements. Is it possible to show the links on the back

OBJECT elements,links,surface;

surface =  ObjectByName("AN1") ;
_ObjectSetProperty( surface , "ShowLinksType", 2);
_ObjectSetProperty( surface , "ShowLinks", 1);
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element A") , "ID", "A");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element B",96,24) , "ID", "B");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element C",48,12) , "BackColor", 16777215);
links = _ObjectGetProperty( surface , "Links");
	_ObjectSetProperty( _ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`A`)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`B`)")) , "Caption", "link");

71
How can I show a picture on the link

OBJECT elements,links,surface;

surface =  ObjectByName("AN1") ;
_ObjectCallMethod(surface, "ExecuteTemplate", "HTMLPicture(`pic1`) = `c:\exontrol\images\zipdisk.gif`");
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element A") , "ID", "A");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element B",96,24) , "ID", "B");
links = _ObjectGetProperty( surface , "Links");
	_ObjectSetProperty( _ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`A`)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`B`)")) , "Caption", "<img>pic1:24</img>");
_ObjectSetProperty( surface , "ShowLinksType", 2);

70
How can I show a caption on the link

OBJECT elements,links,surface;

surface =  ObjectByName("AN1") ;
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element A") , "ID", "A");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element B",96,24) , "ID", "B");
links = _ObjectGetProperty( surface , "Links");
	_ObjectSetProperty( _ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`A`)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`B`)")) , "Caption", "link");
_ObjectSetProperty( surface , "ShowLinksType", 2);

69
I am using EBN to show my arrows, the question is if I can make it bigger/larger

OBJECT appearance,elements,links,surface;

surface =  ObjectByName("AN1") ;
appearance = _ObjectGetProperty( surface , "VisualAppearance");
	_ObjectCallMethod( appearance , "Add", 1,"c:\exontrol\images\normal.ebn");
	_ObjectCallMethod( appearance , "Add", 2,"CP:1 -2 -2 2 2");
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element A") , "ID", "A");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element B",96,24) , "ID", "B");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element C",96,-24) , "ID", "C");
links = _ObjectGetProperty( surface , "Links");
	_ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`A`)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`B`)"));
	_ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`A`)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`C`)"));
_ObjectSetProperty( surface , "LinksArrowColor", 33554432);

68
Is it possible to show different type of arrows for links

OBJECT elements,links,surface;

surface =  ObjectByName("AN1") ;
_ObjectCallMethod( _ObjectGetProperty( surface , "VisualAppearance") , "Add", 1,"c:\exontrol\images\normal.ebn");
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element A") , "ID", "A");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element B",96,24) , "ID", "B");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element C",96,-24) , "ID", "C");
links = _ObjectGetProperty( surface , "Links");
	_ObjectSetProperty( _ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`A`)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`B`)")) , "ArrowColor", 255);
	_ObjectSetProperty( _ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`A`)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(`C`)")) , "ArrowColor", 16777216);

67
How can I remove or clear the entire surface
OBJECT surface;

surface =  ObjectByName("AN1") ;
_ObjectCallMethod( _ObjectGetProperty( surface , "Elements") , "Add", "element");
_ObjectCallMethod( _ObjectGetProperty( surface , "Elements") , "Clear");
_ObjectCallMethod( surface , "Home");

66
How can I programmatically add a child element, or create a tree/hierarchy

OBJECT elements,surface;

surface =  ObjectByName("AN1") ;
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Root") , "ID", "rootID");
	_ObjectCallMethod( elements , "Insert", "Child 1","rootID");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Insert", "Child 2","rootID") , "ID", "childID");
	_ObjectCallMethod( elements , "Insert", "Child 3","rootID");
	_ObjectCallMethod( elements , "Insert", "Sub-Child 1.2","childID");
	_ObjectCallMethod( elements , "Insert", "Sub-Child 2.2","childID");

65
I've noticed that the element's background is transparent. Can I make it opaque

OBJECT elements,surface;

surface =  ObjectByName("AN1") ;
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "new 1") , "BackColor", 16777215);
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "new 1",24,24) , "BackColor", 15790320);

64
How can I add a resizable element
OBJECT element,elements,surface;

surface =  ObjectByName("AN1") ;
elements = _ObjectGetProperty( surface , "Elements");
	element = _ObjectCallMethod( elements , "Add", "new 1");
		_ObjectSetProperty( element , "AutoSize", 0);
		_ObjectSetProperty( element , "Resizable", -1);
	element = _ObjectCallMethod( elements , "Add", "new 1",24,24);
		_ObjectSetProperty( element , "AutoSize", 0);
		_ObjectSetProperty( element , "Resizable", -1);

63
How can I programmatically add a new element

OBJECT elements,surface;

surface =  ObjectByName("AN1") ;
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectCallMethod( elements , "Add", "new 1");
	_ObjectCallMethod( elements , "Add", "new 1",24,24);

62
Is it possible to assign a tooltip to an element

OBJECT surface;

surface =  ObjectByName("AN1") ;
_ObjectSetProperty( _ObjectCallMethod( _ObjectGetProperty( surface , "Elements") , "Add", "Element with a Tooltip") , "ToolTip", "This is a bit of text that should be displayed when cursor hovers the element.");

61
How do I specify direct/straight link for all links

OBJECT elements,links,surface;

surface =  ObjectByName("AN1") ;
_ObjectSetProperty( surface , "ShowLinksType", 3);
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectCallMethod( elements , "Add", "Element <sha ;;0>A");
	_ObjectCallMethod( elements , "Add", "Element <sha ;;0>B",96,24);
links = _ObjectGetProperty( surface , "Links");
	_ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(1)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(2)"));

60
How do I show a direct/straight link

OBJECT elements,links,surface;

surface =  ObjectByName("AN1") ;
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectCallMethod( elements , "Add", "Element <sha ;;0>A");
	_ObjectCallMethod( elements , "Add", "Element <sha ;;0>B",96,24);
links = _ObjectGetProperty( surface , "Links");
	_ObjectSetProperty( _ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(1)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(2)")) , "ShowLinkType", 3);

59
How can I ensure that a specified element fits the surface's visible area

OBJECT elements,pattern,surface;

surface =  ObjectByName("AN1") ;
elements = _ObjectGetProperty( surface , "Elements");
	pattern = _ObjectGetProperty( _ObjectCallMethod( elements , "Add", "Element A",-100) , "Pattern");
		_ObjectSetProperty( pattern , "Type", 6);
		_ObjectSetProperty( pattern , "Color", 14737632);
	_ObjectCallMethod( _ObjectCallMethod( elements , "Add", "Element B",2000) , "ScrollTo", 17);

58
Is it possible to show a pattern like ( not available ) over an element

OBJECT elements,pattern,surface;

surface =  ObjectByName("AN1") ;
elements = _ObjectGetProperty( surface , "Elements");
	pattern = _ObjectGetProperty( _ObjectCallMethod( elements , "Add", "Element+Pattern",-100) , "Pattern");
		_ObjectSetProperty( pattern , "Type", 6);
		_ObjectSetProperty( pattern , "Color", 14737632);
	_ObjectCallMethod( elements , "Add", "Element",100);

57
How can I specify a different overview color for the element

OBJECT elements,surface;

surface =  ObjectByName("AN1") ;
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "Element+A",-100) , "OverviewColor", 255);
	_ObjectCallMethod( elements , "Add", "Element+B",100);
_ObjectCallMethod(surface, "ExecuteTemplate", "ScrollPos(True) = 512");

56
I've noticed that some lines are shown on the border, how can I get ride of them

OBJECT elements,surface;

surface =  ObjectByName("AN1") ;
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectCallMethod( elements , "Add", "Element+A",-100);
	_ObjectCallMethod( elements , "Add", "Element+B",100);
_ObjectCallMethod(surface, "ExecuteTemplate", "ScrollPos(True) = 512");
_ObjectSetProperty( surface , "OverviewColor", -1);

55
How can I handle clicking an icon or a picture

// HandCursorClick event - The uses clicks a part of the element that shows the had cursor.
FUNCTION surfaceEvents_HandCursorClick(OBJECT surface, OBJECT Element, INT Hit, VARIANT Key)
	Message( Key );
END

OBJECT element,surface;

surface =  ObjectByName("AN1") ;
ObjectAssociateEvents("surfaceEvents", surface);
_ObjectCallMethod( surface , "Images", "gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTq" +
	"lVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m" +
	"0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" +
	"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=");
_ObjectCallMethod(surface, "ExecuteTemplate", "HTMLPicture(`pic1`) = `c:\exontrol\images\zipdisk.gif`");
_ObjectCallMethod(surface, "ExecuteTemplate", "HTMLPicture(`pic2`) = `c:\exontrol\images\auction.gif`");
element = _ObjectCallMethod( _ObjectGetProperty( surface , "Elements") , "Add", "Caption");
	_ObjectSetProperty( element , "Pictures", "1,2/pic1/pic2");
	_ObjectSetProperty( element , "PicturesAlign", 33);
	_ObjectSetProperty( element , "ShowHandCursorOn", 771);
	_ObjectSetProperty( element , "CaptionAlign", 1);

54
How can I display a picture

OBJECT surface;

surface =  ObjectByName("AN1") ;
_ObjectCallMethod(surface, "ExecuteTemplate", "HTMLPicture(`pic1`) = `c:\exontrol\images\zipdisk.gif`");
_ObjectCallMethod(surface, "ExecuteTemplate", "HTMLPicture(`pic2`) = `c:\exontrol\images\auction.gif`");
_ObjectSetProperty( _ObjectCallMethod( _ObjectGetProperty( surface , "Elements") , "Add", "Element") , "Pictures", "pic1/pic2");

53
How can I display a picture

OBJECT surface;

surface =  ObjectByName("AN1") ;
_ObjectCallMethod(surface, "ExecuteTemplate", "HTMLPicture(`pic1`) = `c:\exontrol\images\zipdisk.gif`");
_ObjectCallMethod(surface, "ExecuteTemplate", "HTMLPicture(`pic2`) = `c:\exontrol\images\auction.gif`");
_ObjectCallMethod( _ObjectGetProperty( surface , "Elements") , "Add", "Icon <img>pic1</img> or <img>pic2</img>");

52
How can I display an icon

OBJECT surface;

surface =  ObjectByName("AN1") ;
_ObjectCallMethod( surface , "Images", "gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTq" +
	"lVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m" +
	"0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" +
	"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=");
_ObjectSetProperty( _ObjectCallMethod( _ObjectGetProperty( surface , "Elements") , "Add", "Element") , "Pictures", "0/1,2");

51
How can I display an icon

OBJECT surface;

surface =  ObjectByName("AN1") ;
_ObjectCallMethod( surface , "Images", "gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTq" +
	"lVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m" +
	"0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" +
	"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=");
_ObjectCallMethod( _ObjectGetProperty( surface , "Elements") , "Add", "Icon <img>1</img> or <img>2</img>");

50
How can I prevent moving all descendent/outgoing elements when focused element is moved, more like a free move
OBJECT elements,links,surface;

surface =  ObjectByName("AN1") ;
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectCallMethod( elements , "Add", "Element <sha ;;0>A");
	_ObjectCallMethod( elements , "Add", "Element <sha ;;0>B",96,24);
links = _ObjectGetProperty( surface , "Links");
	_ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(1)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(2)"));
_ObjectSetProperty( surface , "ShowLinksType", 3);
_ObjectSetProperty( surface , "AllowMoveDescendents", 0);

49
How can I display the +/- expand/collapse glyphs next to linked elements

OBJECT elements,links,surface;

surface =  ObjectByName("AN1") ;
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectCallMethod( elements , "Add", "Element <sha ;;0>A");
	_ObjectCallMethod( elements , "Add", "Element <sha ;;0>B",96,24);
links = _ObjectGetProperty( surface , "Links");
	_ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(1)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(2)"));
_ObjectCallMethod(surface, "ExecuteTemplate", "Elements.Item(1).Expanded = False");
_ObjectSetProperty( surface , "ExpandLinkedElements", -1);

48
How can I host the Exontrol.Button inside the surface

OBJECT element,elements,surface;

surface =  ObjectByName("AN1") ;
elements = _ObjectGetProperty( surface , "Elements");
	element = _ObjectCallMethod( elements , "Add", "ActiveX");
		_ObjectSetProperty( element , "Type", 2);
		_ObjectSetProperty( element , "ElementFormat", "^"check^":18,^"client^"");
		_ObjectSetProperty( element , "ShowCheckBox", -1);
		_ObjectSetProperty( element , "Control", "Exontrol.Button");
		_ObjectSetProperty( _ObjectGetProperty( element , "Object") , "Caption", "<sha ;;0>button");
		_ObjectSetProperty( element , "Height", 32);
		_ObjectSetProperty( element , "Width", 128);

47
How can I host a Command button

OBJECT element,elements,surface;

surface =  ObjectByName("AN1") ;
elements = _ObjectGetProperty( surface , "Elements");
	element = _ObjectCallMethod( elements , "InsertControl", "Forms.CommandButton.1");
		_ObjectSetProperty( element , "ElementFormat", "^"check^":18,^"client^"");
		_ObjectSetProperty( _ObjectGetProperty( element , "Object") , "Caption", "command");
		_ObjectSetProperty( element , "ShowCheckBox", -1);
		_ObjectSetProperty( element , "Height", 48);
		_ObjectSetProperty( element , "Width", 128);

46
How can I handle the events of the inner ActiveX control

// OleEvent event - Occurs once an inside control fires an event.
FUNCTION surfaceEvents_OleEvent(OBJECT surface, OBJECT Element, OBJECT Ev)
	Message( Ev );
END

OBJECT element,elements,surface;

surface =  ObjectByName("AN1") ;
ObjectAssociateEvents("surfaceEvents", surface);
elements = _ObjectGetProperty( surface , "Elements");
	element = _ObjectCallMethod( elements , "InsertControl", "Forms.CommandButton.1");
		_ObjectSetProperty( element , "ElementFormat", "^"check^":18,^"client^"");
		_ObjectSetProperty( _ObjectGetProperty( element , "Object") , "Caption", "command");
		_ObjectSetProperty( element , "ShowCheckBox", -1);
		_ObjectSetProperty( element , "Height", 48);
		_ObjectSetProperty( element , "Width", 128);

45
How can I display a checkbox while my node hosts an ActiveX inside

OBJECT element,elements,surface;

surface =  ObjectByName("AN1") ;
elements = _ObjectGetProperty( surface , "Elements");
	element = _ObjectCallMethod( elements , "InsertControl", "Forms.CommandButton.1");
		_ObjectSetProperty( element , "ElementFormat", "^"check^":18,^"client^"");
		_ObjectSetProperty( _ObjectGetProperty( element , "Object") , "Caption", "command");
		_ObjectSetProperty( element , "ShowCheckBox", -1);
		_ObjectSetProperty( element , "Height", 48);
		_ObjectSetProperty( element , "Width", 128);

44
Is it possible to display a caption while the element hosts an ActiveX control

OBJECT element,elements,surface;

surface =  ObjectByName("AN1") ;
elements = _ObjectGetProperty( surface , "Elements");
	element = _ObjectCallMethod( elements , "InsertControl", "Forms.CommandButton.1");
		_ObjectSetProperty( element , "ElementFormat", "18;^"caption^"/^"client^"");
		_ObjectSetProperty( _ObjectGetProperty( element , "Object") , "Caption", "command");
		_ObjectSetProperty( element , "Caption", "Forms.CommandButton");
		_ObjectSetProperty( element , "CaptionAlign", 1);
		_ObjectSetProperty( element , "Height", 48);
		_ObjectSetProperty( element , "Width", 128);

43
I host an ActiveX control but it does not cover the whole element. What can be done

OBJECT element,elements,surface;

surface =  ObjectByName("AN1") ;
elements = _ObjectGetProperty( surface , "Elements");
	element = _ObjectCallMethod( elements , "InsertControl", "Forms.CommandButton.1");
		_ObjectSetProperty( element , "ElementFormat", "^"client^"");
		_ObjectSetProperty( _ObjectGetProperty( element , "Object") , "Caption", "command");
		_ObjectSetProperty( element , "Height", 32);
		_ObjectSetProperty( element , "Width", 128);
	element = _ObjectCallMethod( elements , "InsertControl", "Forms.CommandButton.1");
		_ObjectSetProperty( element , "ElementFormat", "^"client^"");
		_ObjectSetProperty( _ObjectGetProperty( element , "Object") , "Caption", "command");
		_ObjectSetProperty( element , "Height", 32);
		_ObjectSetProperty( element , "Width", 128);

42
How can I host my ActiveX to the surface (method 2)

OBJECT element,elements,surface;

surface =  ObjectByName("AN1") ;
elements = _ObjectGetProperty( surface , "Elements");
	element = _ObjectCallMethod( elements , "InsertControl", "Forms.CommandButton.1");
		_ObjectSetProperty( element , "ElementFormat", "^"client^"");
		_ObjectSetProperty( _ObjectGetProperty( element , "Object") , "Caption", "command");
		_ObjectSetProperty( element , "Height", 32);
		_ObjectSetProperty( element , "Width", 128);

41
How can I host my ActiveX to the surface (method 1)

OBJECT element,elements,surface;

surface =  ObjectByName("AN1") ;
elements = _ObjectGetProperty( surface , "Elements");
	element = _ObjectCallMethod( elements , "Add", "ActiveX");
		_ObjectSetProperty( element , "Type", 2);
		_ObjectSetProperty( element , "ElementFormat", "^"client^"");
		_ObjectSetProperty( element , "Control", "Forms.CommandButton.1");
		_ObjectSetProperty( _ObjectGetProperty( element , "Object") , "Caption", "command");
		_ObjectSetProperty( element , "Height", 32);
		_ObjectSetProperty( element , "Width", 128);

40
How can I define the elements with a solid color on the background

OBJECT elements,surface;

surface =  ObjectByName("AN1") ;
_ObjectCallMethod(surface, "ExecuteTemplate", "Background(88) = -1");
_ObjectCallMethod(surface, "ExecuteTemplate", "Background(89) = -1");
_ObjectCallMethod(surface, "ExecuteTemplate", "Background(90) = 255");
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectCallMethod( elements , "Add", "Node A");
	_ObjectCallMethod( elements , "Add", "Node B",96,24);

39
Can I display the status to a different part of the element

OBJECT surface;

surface =  ObjectByName("AN1") ;
_ObjectSetProperty( _ObjectCallMethod( _ObjectGetProperty( surface , "Elements") , "Add", "Node") , "StatusAlign", 3);

38
How can I remove or hide the status part of the event

// AddElement event - A new element has been added to the surface.
FUNCTION surfaceEvents_AddElement(OBJECT surface, OBJECT Element)
	' Element.StatusSize = 0

END

OBJECT elements,surface;

surface =  ObjectByName("AN1") ;
ObjectAssociateEvents("surfaceEvents", surface);
_ObjectCallMethod(surface, "ExecuteTemplate", "Background(89) = -1");
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectCallMethod( elements , "Add", "Node A");
	_ObjectCallMethod( elements , "Add", "Node B",96,24);

37
How can I change the visual appearance of the border for all elements

OBJECT elements,surface;

surface =  ObjectByName("AN1") ;
_ObjectCallMethod( _ObjectGetProperty( surface , "VisualAppearance") , "Add", 1,"c:\exontrol\images\normal.ebn");
_ObjectCallMethod(surface, "ExecuteTemplate", "Background(88) = 16777216");
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectCallMethod( elements , "Add", "Element+A");
	_ObjectCallMethod( elements , "Add", "Element+B",96,24);

36
How can I change the color of the border for all elements

OBJECT elements,surface;

surface =  ObjectByName("AN1") ;
_ObjectCallMethod(surface, "ExecuteTemplate", "Background(88) = 65280");
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectCallMethod( elements , "Add", "Element+A");
	_ObjectCallMethod( elements , "Add", "Element+B",96,24);

35
How can I remove the border for all elements

OBJECT elements,surface;

surface =  ObjectByName("AN1") ;
_ObjectCallMethod(surface, "ExecuteTemplate", "Background(88) = -1");
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectCallMethod( elements , "Add", "Element+A");
	_ObjectCallMethod( elements , "Add", "Element+B",96,24);

34
How do I change the visual appearance the glpyh that shows when the element is added as a child

OBJECT elements,surface;

surface =  ObjectByName("AN1") ;
_ObjectCallMethod( _ObjectGetProperty( surface , "VisualAppearance") , "Add", 1,"c:\exontrol\images\normal.ebn");
_ObjectCallMethod( _ObjectGetProperty( surface , "VisualAppearance") , "Add", 2,"c:\exontrol\images\pushed.ebn");
_ObjectCallMethod(surface, "ExecuteTemplate", "Background(86) = 16777216");
_ObjectCallMethod(surface, "ExecuteTemplate", "Background(87) = 33554432");
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectCallMethod( elements , "Add", "Element <sha ;;0>A");
	_ObjectCallMethod( elements , "Add", "Element <sha ;;0>B",96,24);

33
Is it possible to change the color for the glpyh that shows when the element is added as a child

OBJECT elements,surface;

surface =  ObjectByName("AN1") ;
_ObjectCallMethod(surface, "ExecuteTemplate", "Background(86) = 255");
_ObjectCallMethod(surface, "ExecuteTemplate", "Background(87) = 255");
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectCallMethod( elements , "Add", "Element <sha ;;0>A");
	_ObjectCallMethod( elements , "Add", "Element <sha ;;0>B",96,24);

32
How can I change the color to show a valid link

OBJECT elements,surface;

surface =  ObjectByName("AN1") ;
_ObjectCallMethod(surface, "ExecuteTemplate", "Background(83) = 65280");
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectCallMethod( elements , "Add", "Element <sha ;;0>A");
	_ObjectCallMethod( elements , "Add", "Element <sha ;;0>B",96,24);

31
How can I change the color to show an invalid link

OBJECT elements,surface;

surface =  ObjectByName("AN1") ;
_ObjectCallMethod(surface, "ExecuteTemplate", "Background(82) = 65280");
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectCallMethod( elements , "Add", "Element <sha ;;0>A");
	_ObjectCallMethod( elements , "Add", "Element <sha ;;0>B",96,24);

30
How can I disable adding the elements as child of other nodes
OBJECT elements,surface;

surface =  ObjectByName("AN1") ;
_ObjectSetProperty( surface , "AllowInsertObject", 0);
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectCallMethod( elements , "Add", "Element <sha ;;0>A");
	_ObjectCallMethod( elements , "Add", "Element <sha ;;0>B",96,24);

29
How can I prevent moving the outgoing /descendents elements when moving an element
OBJECT elements,links,surface;

surface =  ObjectByName("AN1") ;
_ObjectSetProperty( surface , "ShowLinksType", 3);
_ObjectSetProperty( surface , "AllowMoveDescendents", 0);
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectCallMethod( elements , "Add", "Element <sha ;;0>A");
	_ObjectCallMethod( elements , "Add", "Element <sha ;;0>B",96,24);
links = _ObjectGetProperty( surface , "Links");
	_ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(1)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(2)"));

28
How can I add programatically a link

OBJECT elements,links,surface;

surface =  ObjectByName("AN1") ;
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectCallMethod( elements , "Add", "Element <sha ;;0>A");
	_ObjectCallMethod( elements , "Add", "Element <sha ;;0>B",96,24);
links = _ObjectGetProperty( surface , "Links");
	_ObjectCallMethod( links , "Add", _ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(1)"),_ObjectCallMethod(surface, "ExecuteTemplate", ".Elements.Item(2)"));

27
How do I prevent adding a link between elements
OBJECT elements,surface;

surface =  ObjectByName("AN1") ;
_ObjectSetProperty( surface , "AllowLinkObjects", 0);
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectCallMethod( elements , "Add", "Element <sha ;;0>A");
	_ObjectCallMethod( elements , "Add", "Element <sha ;;0>B",96,24);

26
How can I hide the 100% button ( zoom ) on the control's toolbar

OBJECT surface;

surface =  ObjectByName("AN1") ;
_ObjectSetProperty( surface , "ToolBarFormat", "-1,100");

25
Is it possible to hide the Home button on the control's toolbar

OBJECT surface;

surface =  ObjectByName("AN1") ;
_ObjectSetProperty( surface , "ToolBarFormat", "-1,101");

24
How can I hide the grid lines, including the axis

OBJECT surface;

surface =  ObjectByName("AN1") ;
_ObjectSetProperty( surface , "ShowGridLines", 0);
_ObjectSetProperty( surface , "AxisStyle", -1);

23
How can I hide the grid lines

OBJECT surface;

surface =  ObjectByName("AN1") ;
_ObjectSetProperty( surface , "ShowGridLines", 0);

22
How can I clear the images shown on the control's toolbar

OBJECT surface;

surface =  ObjectByName("AN1") ;
_ObjectCallMethod( surface , "ToolBarReplaceIcon", 0,-1);
_ObjectCallMethod( surface , "ToolBarRefresh");

21
How can I replace the default icons shown on the control's toolbar

OBJECT surface;

surface =  ObjectByName("AN1") ;
_ObjectCallMethod( surface , "ToolBarReplaceIcon", 0,-1);
_ObjectCallMethod( surface , "ToolBarImages", "gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTq" +
	"lVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m" +
	"0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" +
	"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=");

20
How can I replace the default icons shown on the control's toolbar

OBJECT surface;

surface =  ObjectByName("AN1") ;
_ObjectCallMethod( surface , "ToolBarImages", "gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTq" +
	"lVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m" +
	"0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" +
	"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=");
_ObjectCallMethod(surface, "ExecuteTemplate", "ToolBarCaption(100) = `<img>3</img> aka1`");

19
How can I add an anchor element to the control's toolbar

// ToolBarAnchorClick event - Occurs when an anchor element is clicked, on the control's toolbar.
FUNCTION surfaceEvents_ToolBarAnchorClick(OBJECT surface, STRING AnchorID, STRING Options)
	Message( AnchorID );
END

OBJECT surface;

surface =  ObjectByName("AN1") ;
ObjectAssociateEvents("surfaceEvents", surface);
_ObjectSetProperty( surface , "ToolBarFormat", "-1,100,101,|,102");
_ObjectCallMethod(surface, "ExecuteTemplate", "ToolBarCaption(102) = `<a a1>anchor</a>`");

18
How can I add a button/image to the control's toolbar

// ToolBarClick event - Occurs when the user clicks a button in the toolbar.
FUNCTION surfaceEvents_ToolBarClick(OBJECT surface, INT ID, INT SelectedID)
	Message( ID );
END

OBJECT surface;

surface =  ObjectByName("AN1") ;
ObjectAssociateEvents("surfaceEvents", surface);
_ObjectCallMethod( surface , "ToolBarImages", "gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTq" +
	"lVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m" +
	"0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" +
	"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=");
_ObjectSetProperty( surface , "ToolBarFormat", "-1,100,101,102");
_ObjectCallMethod(surface, "ExecuteTemplate", "ToolBarCaption(102) = `<img>3</img> new`");

17
How can I add a button to the control's toolbar

// ToolBarClick event - Occurs when the user clicks a button in the toolbar.
FUNCTION surfaceEvents_ToolBarClick(OBJECT surface, INT ID, INT SelectedID)
	Message( ID );
END

OBJECT surface;

surface =  ObjectByName("AN1") ;
ObjectAssociateEvents("surfaceEvents", surface);
_ObjectSetProperty( surface , "ToolBarFormat", "-1,100,101,102");
_ObjectCallMethod(surface, "ExecuteTemplate", "ToolBarCaption(102) = `<sha ;;0>new`");

16
How can I hide the control's toolbar

OBJECT surface;

surface =  ObjectByName("AN1") ;
_ObjectSetProperty( surface , "ToolBarVisible", 0);

15
How can I prevent selecting the elements
OBJECT surface;

surface =  ObjectByName("AN1") ;
_ObjectSetProperty( surface , "AllowSelectObject", 0);
_ObjectSetProperty( surface , "AllowSelectObjectRect", 0);
_ObjectSetProperty( surface , "AllowToggleSelectKey", 0);
_ObjectCallMethod( _ObjectGetProperty( surface , "Elements") , "Add", "element");

14
How can I show the selected elements the same as the control has the focus

OBJECT surface;

surface =  ObjectByName("AN1") ;
_ObjectSetProperty( surface , "HideSel", 0);
_ObjectSetProperty( surface , "SelectObjectColorInactive", _ObjectGetProperty( surface , "SelectObjectColor"));
_ObjectSetProperty( surface , "SelectObjectTextColorInactive", _ObjectGetProperty( surface , "SelectObjectTextColor"));
_ObjectSetProperty( _ObjectCallMethod( _ObjectGetProperty( surface , "Elements") , "Add", "element") , "Selected", -1);

13
How can I show the selected elements with a different border

OBJECT surface;

surface =  ObjectByName("AN1") ;
_ObjectCallMethod( _ObjectGetProperty( surface , "VisualAppearance") , "Add", 1,"c:\exontrol\images\normal.ebn");
_ObjectSetProperty( surface , "HideSel", 0);
_ObjectSetProperty( surface , "SelectObjectStyle", 48);
_ObjectSetProperty( surface , "SelectObjectColor", 16777216);
_ObjectSetProperty( surface , "SelectObjectTextColor", 0);
_ObjectSetProperty( surface , "SelectObjectColorInactive", _ObjectGetProperty( surface , "SelectObjectColor"));
_ObjectSetProperty( surface , "SelectObjectTextColorInactive", _ObjectGetProperty( surface , "SelectObjectTextColor"));
_ObjectSetProperty( _ObjectCallMethod( _ObjectGetProperty( surface , "Elements") , "Add", "element") , "Selected", -1);

12
How can I show the selected elements with a different background color

OBJECT surface;

surface =  ObjectByName("AN1") ;
_ObjectSetProperty( surface , "HideSel", 0);
_ObjectSetProperty( surface , "SelectObjectStyle", -1);
_ObjectSetProperty( surface , "SelectObjectColor", 255);
_ObjectSetProperty( surface , "SelectObjectTextColor", 16777215);
_ObjectSetProperty( surface , "SelectObjectColorInactive", _ObjectGetProperty( surface , "SelectObjectColor"));
_ObjectSetProperty( surface , "SelectObjectTextColorInactive", _ObjectGetProperty( surface , "SelectObjectTextColor"));
_ObjectSetProperty( _ObjectCallMethod( _ObjectGetProperty( surface , "Elements") , "Add", "element") , "Selected", -1);

11
Is it possible to add an inner control on the surface

// OleEvent event - Occurs once an inside control fires an event.
FUNCTION surfaceEvents_OleEvent(OBJECT surface, OBJECT Element, OBJECT Ev)
	Message( Ev );
END

OBJECT element,elements,surface;

surface =  ObjectByName("AN1") ;
ObjectAssociateEvents("surfaceEvents", surface);
elements = _ObjectGetProperty( surface , "Elements");
	element = _ObjectCallMethod( elements , "Add", "activex hosting");
		_ObjectSetProperty( element , "Type", 2);
		_ObjectSetProperty( element , "Control", "Forms.CommandButton.1");
		_ObjectSetProperty( element , "Caption", "Command Button");
		_ObjectSetProperty( element , "Height", 64);
		_ObjectSetProperty( element , "Width", 128);
		_ObjectSetProperty( element , "ElementFormat", "14;^"caption^"/^"client^"");
		_ObjectSetProperty( element , "CaptionAlign", 1);

10
How can I make the control read-only
// LayoutStartChanging event - Occurs when the control's layout is about to be changed.
FUNCTION surfaceEvents_LayoutStartChanging(OBJECT surface, INT Operation)
	Message( Operation );
	_ObjectCallMethod( surface , "CancelLayoutChanging");
END

OBJECT elements,surface;

surface =  ObjectByName("AN1") ;
ObjectAssociateEvents("surfaceEvents", surface);
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectCallMethod( elements , "Add", "new element");

9
How can I handle clicking a picture on the element

// HandCursorClick event - The uses clicks a part of the element that shows the had cursor.
FUNCTION surfaceEvents_HandCursorClick(OBJECT surface, OBJECT Element, INT Hit, VARIANT Key)
	Message( Key );
END

OBJECT element,elements,surface;

surface =  ObjectByName("AN1") ;
ObjectAssociateEvents("surfaceEvents", surface);
_ObjectCallMethod( surface , "Images", "gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTq" +
	"lVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m" +
	"0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" +
	"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=");
elements = _ObjectGetProperty( surface , "Elements");
	element = _ObjectCallMethod( elements , "Add", "new element");
		_ObjectSetProperty( element , "CaptionAlign", 2);
		_ObjectSetProperty( element , "PicturesAlign", 0);
		_ObjectSetProperty( element , "ShowHandCursorOn", 3335);
		_ObjectSetProperty( element , "Pictures", "0,1,2");

8
How can I show the hand cursor when user hovers the element's image

// HandCursorClick event - The uses clicks a part of the element that shows the had cursor.
FUNCTION surfaceEvents_HandCursorClick(OBJECT surface, OBJECT Element, INT Hit, VARIANT Key)
	Message( Key );
END

OBJECT element,elements,surface;

surface =  ObjectByName("AN1") ;
ObjectAssociateEvents("surfaceEvents", surface);
_ObjectCallMethod( surface , "Images", "gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTq" +
	"lVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m" +
	"0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" +
	"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=");
elements = _ObjectGetProperty( surface , "Elements");
	element = _ObjectCallMethod( elements , "Add", "new element");
		_ObjectSetProperty( element , "CaptionAlign", 2);
		_ObjectSetProperty( element , "PicturesAlign", 0);
		_ObjectSetProperty( element , "ShowHandCursorOn", 3335);
		_ObjectSetProperty( element , "Pictures", "0,1,2");

7
How can I show the hand cursor when user hovers the element's checkbox

OBJECT element,elements,surface;

surface =  ObjectByName("AN1") ;
elements = _ObjectGetProperty( surface , "Elements");
	element = _ObjectCallMethod( elements , "Add", "new element");
		_ObjectSetProperty( element , "CaptionAlign", 2);
		_ObjectSetProperty( element , "CheckBoxAlign", 0);
		_ObjectSetProperty( element , "ShowCheckBox", -1);
		_ObjectSetProperty( element , "ShowHandCursorOn", 3084);

6
How can I remove the status part for all elements

// AddElement event - A new element has been added to the surface.
FUNCTION surfaceEvents_AddElement(OBJECT surface, OBJECT Element)
	' Element.StatusSize = 0

END

OBJECT surface;

surface =  ObjectByName("AN1") ;
ObjectAssociateEvents("surfaceEvents", surface);
_ObjectCallMethod(surface, "ExecuteTemplate", "Background(89) = -1");
_ObjectCallMethod( _ObjectGetProperty( surface , "Elements") , "Add", "new element");

5
How can I remove the border for all elements

OBJECT surface;

surface =  ObjectByName("AN1") ;
_ObjectCallMethod(surface, "ExecuteTemplate", "Background(88) = -1");
_ObjectCallMethod( _ObjectGetProperty( surface , "Elements") , "Add", "new element");

4
How do I edit the element's caption once the user creates the element

// CreateElement event - The user creates at runtime a new element.
FUNCTION surfaceEvents_CreateElement(OBJECT surface, OBJECT Element)
	' Element.Edit(0)
	' Element.AutoSize = True

END



3
How can I align the element's checkbox next to the text

OBJECT element,elements,surface;

surface =  ObjectByName("AN1") ;
_ObjectCallMethod( surface , "BeginUpdate");
elements = _ObjectGetProperty( surface , "Elements");
	element = _ObjectCallMethod( elements , "Add", "text");
		_ObjectSetProperty( element , "ShowCheckBox", -1);
		_ObjectSetProperty( element , "CaptionAlign", 2);
		_ObjectSetProperty( element , "CheckBoxAlign", 0);
_ObjectCallMethod( surface , "EndUpdate");

2
How can I assign a check-box to all elements

// AddElement event - A new element has been added to the surface.
FUNCTION surfaceEvents_AddElement(OBJECT surface, OBJECT Element)
	' Element.ShowCheckBox = True

END

OBJECT elements,surface;

surface =  ObjectByName("AN1") ;
ObjectAssociateEvents("surfaceEvents", surface);
_ObjectCallMethod( surface , "BeginUpdate");
elements = _ObjectGetProperty( surface , "Elements");
	_ObjectCallMethod( elements , "Add", "",-24,-24);
	_ObjectSetProperty( _ObjectCallMethod( elements , "Add", "") , "Checked", 1);
_ObjectCallMethod( surface , "Home");
_ObjectCallMethod( surface , "EndUpdate");

1
How do I change the control's background color

OBJECT surface;

surface =  ObjectByName("AN1") ;
_ObjectSetProperty( surface , "BackColor", 15790320);